// const puppeteer = require('puppeteer')
import puppeteer from 'puppeteer-extra'
import StealthPlugin from 'puppeteer-extra-plugin-stealth'

puppeteer.use(StealthPlugin())

// const readline = require('readline')
import readline from 'readline'

// 创建命令行交互接口
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
})

;(async () => {
  // 启动浏览器
  const browser = await puppeteer.launch({
    headless: false, // 设置为 true 以无头模式运行
    defaultViewport: null,
    args: ['--start-maximized'], // 最大化窗口
  })

  // 打开新页面
  const page = await browser.newPage()

  // 导航到 ChatGPT
  await page.goto('https://chat.openai.com/', {
    waitUntil: 'networkidle2',
  })

  console.log('请手动登录 ChatGPT...')

  // 等待用户手动登录
  await page.waitForFunction(
    () => {
      return document.querySelector('textarea#prompt-textarea') !== null
    },
    { timeout: 0 }
  )

  console.log('登录成功，可以开始提问了！')

  // 循环提问
  while (true) {
    const question = await new Promise(resolve => {
      rl.question('请输入你的问题（输入 "exit" 退出）: ', resolve)
    })

    if (question.toLowerCase() === 'exit') {
      break
    }

    // 输入问题
    await page.type('textarea#prompt-textarea', question)

    // 点击发送按钮
    await page.click('button[data-testid="send-button"]')

    console.log('问题已发送，等待回答...')

    // 等待回答完成
    await page.waitForFunction(() => {
      const buttons = document.querySelectorAll('button[data-testid="send-button"]')
      const lastButton = buttons[buttons.length - 1]
      return !lastButton.disabled
    })

    // 获取最后一个回答
    const answer = await page.evaluate(() => {
      const divs = document.querySelectorAll('.markdown.prose')
      return divs[divs.length - 1].textContent
    })

    console.log('ChatGPT 回答:')
    console.log(answer)
    console.log('\n')
  }

  // 关闭浏览器
  await browser.close()
  rl.close()
})()
